A data center includes many data processing systems, e.g., servers. The data processing systems may use accelerators to increase processing power and speed. Acceleration, or hardware acceleration, refers to the use of hardware to perform functions faster than is possible in software executing on a general-purpose central processing unit (CPU). Accelerators may include any of a variety of devices such as graphics processing units (GPUs), digital signal processors (DSPs), programmable integrated circuits (ICs), CPUs, or other specialized hardware. In many cases, the accelerators integrate with the data processing system via a communication bus. Peripheral Component Interconnect Express (PCIe) is one variety of communication bus that has found widespread usage in linking accelerators with data processing systems.
Typically, each different type of device that may be used in implementing an accelerator uses a different instruction set and/or different configuration files. In order to leverage the power of an accelerator, the data processing system, or “host system,” executes a “heterogeneous application.” A heterogeneous application is an application that may execute on a heterogeneous computing platform, i.e., a data processing system with one or more accelerators. An application written in Open Computing Language (OpenCL) is an example of a heterogeneous application where different portions of the application are designated to execute on different devices such as the host system or an accelerator coupled to the host system.
Often, the accelerators are initialized at boot time using configuration files. The configuration files are used to change the functionality of the devices of the accelerator. The configuration files, for example, may enable features in the accelerator and/or disable features of the accelerator. Typically, an accelerator must load more than one configuration file in order to boot or configure the accelerator. Often, there are special requirements relating to interdependencies among the configuration files that must be observed. For example, there may be a particular loading sequence requirement for the configuration files.